"""
爬虫：自动化  请求  解析  保存网页数据的程序

爬取流程：
    1.获取目标url
    2.构造请求
    3.获取响应
    4.解析提取数据
    5.保存数据
    6.提取深层数据
    7.循环请求

python爬虫的优势：
    1.有大量方便的数据请求，解析，保存库
    2.与后续工作（比如数据处理与分析）无缝衔接
    3.异步高性能

Robots.txt
    1.一个位于根目录的说明文件，可有可无，解释哪些UA  可以访问或者禁止访问哪些网址
    2.尽量遵守

HTTP请求与响应头
    1.请求头
        a.User-Agent 请求工具的标识、类型与版本
        b.Accept 访问来源
        c.Cookie 最重要的就是用户信息  csrf_token、sessionid、phpid
        d.Content-Type 请求类型 form、json
        e.Authorization 用户令牌
    2.响应头
        a.Content-Type 响应类型  json、text、javascript

请求库：
    1.urllib
    2.requests
        requests依赖于urllib3
        requests.get(url,params=None,**kwargs)

        状态码为200表示请求成功，才能解析
        404标识请求错误

发起请求：get请求和post请求
    1.get
        参数有两种方法：1.直接在请求的后面用?拼接
        2.使用params传递

        原始请求：http://127.0.0.1:5000/params
        1.请求：res = requests.get("http://127.0.0.1:5000/params?page=1&size=10")
        参数：page=1  size=10
        2.请求：res = requests.get("http://127.0.0.1:5000/params", params={"next": "/center"})
        参数：next=/center

        服务器接收了爬虫传输的数据，然后进行了返回
        发起请求时get的参数需要能在服务器中进行解析
        解析方式:
            库==> flask有一个全局对象request
                from flask import request
            获取参数：  request.args.get("参数名", 默认值)
                    page = request.args.get("page", 1)

    2.post
        数据分为data和json，其请求头的类型不一样
            data：multipart/form-data
            json：application/json
        两个请求头中data和json只能有一个

        post请求中只要带有data参数，那么请求头的类型（默认）就是application/x-www-form-urlencoded
        json参数的请求头类型就是application/json

        注：！！！！发起post请求时一定要注意请求头所携带的参数是data还是json


"""